for i in range(int(input())):
s=input()
n=int(input())
A=list(map(int,input().split()))
D,L=dict(),[]
for j in range(len(s)):
if s[j] in D:
D[s[j]]+=1
else:
D[s[j]]=1
L.append(s[j])
L.sort(reverse=True)
N=[None for j in range(n)]
G=[]
pos=0
count=0
while count<n:
S=[]
for j in range(n):
diff=0
for e in G:
diff+=abs(e-j)
if diff==A[j]:
S.append(j)
S=list(set(S).difference(set(G)))
while len(S)>D[L[pos]]:
pos+=1
for j in S:
N[j]=L[pos]
G.append(j)
count+=1
pos+=1
ans=''
for j in N:
ans+=j
print(ans)
1711D - Rain | 534A - Exam |
1472A - Cards for Friends | 315A - Sereja and Bottles |
1697C - awoo's Favorite Problem | 165A - Supercentral Point |
1493A - Anti-knapsack | 1493B - Planet Lapituletti |
747B - Mammoth's Genome Decoding | 1591C - Minimize Distance |
1182B - Plus from Picture | 1674B - Dictionary |
1426C - Increase and Copy | 520C - DNA Alignment |
767A - Snacktower | 1365A - Matrix Game |
714B - Filya and Homework | 31A - Worms Evolution |
1691A - Beat The Odds | 433B - Kuriyama Mirai's Stones |
892A - Greed | 32A - Reconnaissance |
1236D - Alice and the Doll | 1207B - Square Filling |
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |